#include "dialogoimportacao.h"
#include "ui_dialogoimportacao.h"

#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
#include "stockfileparser.h"
#include "candelabrodb.h"


DialogoImportacao::DialogoImportacao(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DialogoImportacao)
{
    ui->setupUi(this);
    this->ui->cbTodasAsAcoes->clear();
    this->ui->cbTodasAsAcoes->addItem("");


}

DialogoImportacao::~DialogoImportacao()
{
    delete ui;
}


void DialogoImportacao::on_botoesOpcoesImportacao_accepted()
{
    this->done(QDialog::Accepted);

    if (fileToImport==""){
        QMessageBox::information ( this, QString::fromUtf8("Arquivo não selecionado"), QString::fromUtf8("Não foi selecionado um arquivo para ser importado.") );
        return;
    }

    QString stockName= "";

    if (this->ui->cbTodasAsAcoes->currentText()==""){
        stockName = this->ui->edtNomeAcao->text();
    }
    else{
        stockName = this->ui->cbTodasAsAcoes->currentText();
    }



    if (stockName==""){
        QMessageBox::information ( this, QString::fromUtf8("Nome da cotação não informado"), QString::fromUtf8("Não foi informado um nome para as cotações.") );
        return;
    }


    if (!db->existsStock(stockName)){
        db->insertStock(stockName);
    }

    StockFileParser parser;
    OHLCVSet s =parser.getSingleStockSet(fileToImport, stockName);
    db->insertStockPrice(s);

    QMessageBox::information ( this, QString::fromUtf8("Importação concluída"), QString::fromUtf8("A importação dos dados foi realizada com sucesso.") );
    emit acaoFoiInserida();
}


void DialogoImportacao::on_botoesOpcoesImportacao_rejected()
{
    this->done(QDialog::Rejected);
}



void DialogoImportacao::setDatabase(CandelabroDB *db){
    this->db = db;
    this->ui->cbTodasAsAcoes->clear();
    this->ui->cbTodasAsAcoes->addItem("");
    this->ui->cbTodasAsAcoes->addItems(this->db->getAllStocksNames());
}


void DialogoImportacao::on_pbAbrirArquivo_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this);

    StockFileParser parser;

    if (fileName==""){
        this->ui->lblFilePath->setText("[caminho do arquivo]");
        return;
    }

    //cancelar se o arquivo nao foi reconhecido
    if (!parser.isSingleStockFile(fileName)){
        QMessageBox::information ( this, QString::fromUtf8("Arquivo não reconhecido"), QString::fromUtf8("O arquivo não foi reconhecido como um arquivo de cotações.") );
        return;
    }

    this->ui->lblFilePath->setText(fileName);
    fileToImport = fileName;
}
